package models

import "gorm.io/gorm"

type Menu struct {
	gorm.Model
	Id                 int    `gorm:"column:id" json:"id"`
	Title              string `gorm:"column:title" json:"title"`
	Icon               string `gorm:"column:icon" json:"icon"`
	Path               string `gorm:"column:path" json:"path"`
	Component          string `gorm:"column:component" json:"component"`
	Redirect           string `gorm:"column:redirect" json:"redirect"`
	Affix              int    `gorm:"column:affix" json:"affix"`
	ParentId           int    `gorm:"column:parent_id" json:"parentId"`
	Name               string `gorm:"column:name" json:"name"`
	HideInMenu         int    `gorm:"column:hide_in_menu;default:0" json:"hideInMenu"`
	Url                string `gorm:"column:url" json:"url"`
	HideInBreadcrumb   int    `gorm:"column:hide_in_breadcrumb;default:1" json:"hideInBreadcrumb"`
	HideChildrenInMenu int    `gorm:"column:hide_children_in_menu;default:1" json:"hideChildrenInMenu"`
	KeepAlive          int    `gorm:"column:keep_alive;default:1" json:"keepAlive"`
	Target             string `gorm:"column:target" json:"target"`
	IsDeleted          int    `gorm:"column:is_deleted;default:0" json:"isDeleted"`
	IsDisable          int    `gorm:"column:is_disable;default:0" json:"isDisable"`
	OrderNum           int    `gorm:"column:order_num;default:1" json:"orderNum"`
}
type MenuVo struct {
	gorm.Model
	Id         int    `gorm:"column:id" json:"id"`
	Title      string `gorm:"column:title" json:"title"`
	Icon       string `gorm:"column:icon" json:"icon"`
	Path       string `gorm:"column:path" json:"path"`
	Component  string `gorm:"column:component" json:"component"`
	Redirect   string `gorm:"column:redirect" json:"redirect"`
	Affix      int    `gorm:"column:affix" json:"affix"`
	ParentId   int    `gorm:"column:parent_id" json:"parentId"`
	Name       string `gorm:"column:name" json:"name"`
	HideInMenu int    `gorm:"column:hide_in_menu;default:0" json:"hideInMenu"`
	Url        string `gorm:"column:url" json:"url"`
	KeepAlive  int    `gorm:"column:keep_alive;default:1" json:"keepAlive"`
	Target     string `gorm:"column:target" json:"target"`
	IsDisable  int    `gorm:"column:is_disable;default:0" json:"isDisable"`
	OrderNum   int    `gorm:"column:order_num;default:1" json:"orderNum"`
	CreateTime MyTime `gorm:"column:created_at" json:"createTime"`
}
type MenuDto struct {
	gorm.Model
	Id         int    `gorm:"column:id" json:"id"`
	ParentId   int    `gorm:"column:parent_id" json:"parentId"`
	Title      string `gorm:"column:title" json:"title"`
	OrderNum   int    `gorm:"column:order_num;default:1" json:"orderNum"`
	Icon       string `gorm:"column:icon" json:"icon"`
	RouterType int    `gorm:"column:router_type" json:"routerType"`
	Component  string `gorm:"column:component" json:"component"`
	Redirect   string `gorm:"column:redirect" json:"redirect"`
	Path       string `gorm:"column:path" json:"path"`
	Url        string `gorm:"column:url" json:"url"`
	Target     string `gorm:"column:target" json:"target"`
	Affix      int    `gorm:"column:affix" json:"affix"`
	KeepAlive  int    `gorm:"column:keep_alive;default:1" json:"keepAlive"`
	HideInMenu int    `gorm:"column:hide_in_menu;default:0" json:"hideInMenu"`
	IsDisable  int    `gorm:"column:is_disable;default:0" json:"isDisable"`
	RoleId     []int  `gorm:"-" json:"roleId"`
}
type MenuByIdVo struct {
	gorm.Model
	Id         int    `gorm:"column:id" json:"id"`
	ParentId   int    `gorm:"column:parent_id" json:"parentId"`
	Title      string `gorm:"column:title" json:"title"`
	OrderNum   int    `gorm:"column:order_num;default:1" json:"orderNum"`
	Icon       string `gorm:"column:icon" json:"icon"`
	RouterType int    `gorm:"column:router_type" json:"routerType"`
	Component  string `gorm:"column:component" json:"component"`
	Redirect   string `gorm:"column:redirect" json:"redirect"`
	Path       string `gorm:"column:path" json:"path"`
	Url        string `gorm:"column:url" json:"url"`
	Target     string `gorm:"column:target" json:"target"`
	Affix      int    `gorm:"column:affix" json:"affix"`
	KeepAlive  int    `gorm:"column:keep_alive;default:1" json:"keepAlive"`
	HideInMenu int    `gorm:"column:hide_in_menu;default:0" json:"hideInMenu"`
	IsDisable  int    `gorm:"column:is_disable;default:0" json:"isDisable"`
	RoleId     []int  `gorm:"-" json:"roleId"`
}

func (table *Menu) TableName() string {
	return "sys_menu"
}
func (table *MenuVo) TableName() string {
	return "sys_menu"
}
func (table *MenuDto) TableName() string {
	return "sys_menu"
}
func (table *MenuByIdVo) TableName() string {
	return "sys_menu"
}
